// 添加 JsonDB 引用
const JsonDB = require("../json-db");
const path = require("path");
let db = null;

// 初始化数据库
async function initializeDB() {
  const dataPath = path.resolve("./data");
  console.log("数据库存储路径:", dataPath);

  return new JsonDB({
    storage: {
      path: dataPath,
      mode: "hybrid",
    },
    backup: {
      enabled: true,
      interval: 3600000,
      keepCount: 5,
    },
    logger: {
      level: "debug",
      file: path.join(dataPath, "db.log"),
      console: true,
    },
  });
}

// 查询测试函数
async function runTests(db) {
  try {
    console.log("开始执行查询测试...");

    // 第一个测试：统计不同年龄的学生数量
    const uniqueAges = await db.查询数据({
      表名: "学员成绩表_列式",
      列: ["年龄", "数量"],
      聚合: {
        数量: {
          类型: "count",
          列: "*"
        }
      },
      分组: ["年龄"]
    });
    console.log("\n不同年龄数:", uniqueAges.results);

    // 第二个测试：查看表的压缩情况
    const result = await db.查看表文件内容('学员成绩表_列式');
    if (result.success) {
      console.log('表内容:', result.数据);
      console.log('压缩前大小:', result.原始大小, '字节');
      console.log('压缩后大小:', result.压缩大小, '字节');
      console.log('压缩比:', result.压缩比);
    } else {
      console.error('查看失败:', result.错误);
    }

  } catch (error) {
    console.error("测试失败:", error.message);
  }
}

// 主函数
async function main() {
  try {
    db = await initializeDB();
    await runTests(db);
  } catch (error) {
    console.error("执行失败:", error);
  }
}

// 运行主函数
main().catch((error) => {
  console.error("程序执行失败:", error);
}); 